<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>列表过滤</title>
    <script src="../../UI/vue/vue.js"></script>
</head>

<body>
    <div id="root">
        <h2>人员列表</h2>
            <input type="text" placeholder="请输入名字" v-model="keyword">
            <button @click="sortType = 2">年龄升序</button>
			<button @click="sortType = 1">年龄降序</button>
			<button @click="sortType = 0">原顺序</button>
            <button @click="updateMei">更新马冬梅的信息</button>
            <ul>
                <li v-for="(p,index) of filPerson" :key="index">
                    {{p.name}}-{{p.age}}-{{p.sex}}
                </li>
            </ul>
        
    </div>
</body>
<script>
    Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
    const vm = new Vue({
        el: '#root',
        data:{
			keyword:'',
            sortType:'0',
			persons:[
				{id:'001',name:'马冬梅',age:26,sex:'女'},
				{id:'002',name:'周冬雨',age:20,sex:'女'},
				{id:'003',name:'周杰伦',age:38,sex:'男'},
				{id:'004',name:'温兆伦',age:22,sex:'男'}
				],
             //   filPerson:[]//用watch写
			},
        // 组件参数 接收来自父组件的数据
        props: {},
        // 局部注册的组件
        components: {},
        // 计算属性
        computed: {
        	filPerson(){
			    const arr =	this.persons.filter((p)=>{
					return p.name.indexOf(this.keyword) !== -1
				})
                if(this.sortType){
                    arr.sort((p1,p2)=>{
                        return this.sortType ===1?p2.age-p1.age:p1.age-p2.age
                    })
                }
                return arr
			}
        },
        // 侦听器
        watch: {
            // keyword:{
            //     immediate:true,//先执行一遍
            //     handler(val){
            //         this.filPerson = this.persons.filter((p)=>{
            //             return p.name.indexOf(val) !==-1
            //         })
            //     }
            // }
        },
        // 组件方法
        methods: {
            updateMei() {
                // this.persons[0].name = '马老师' //奏效
						// this.persons[0].age = 50 //奏效
						// this.persons[0].sex = '男' //奏效
						// this.persons[0] = {id:'001',name:'马老师',age:50,sex:'男'} //不奏效
						this.persons.splice(0,1,{id:'001',name:'马老师',age:50,sex:'男'})
            },
        },
    })
</script>

</html>